#ifndef GX_FR_ENGINE_H
#define GX_FR_ENGINE_H

#include "Material.h"
#include "BSP_Scene.h"
#include "Global.h"
#include "Renderer.h"

class NxPhysicsSDK;
class NxControllerManager;

namespace FinalRendering
{
	namespace Engine
	{
		bool InitEngine();
		void FinalizeEngine();

		namespace Physics
		{
			class PhysScene;
		}

		class PhysXInitializationFailedException : public Exception
		{
		public:
			PhysXInitializationFailedException();
		};

		class Engine : public Object
		{
		private:
			NxPhysicsSDK * phys;
			NxControllerManager * ctrlManager;
		public:
			Engine();
			~Engine();
			NxPhysicsSDK * GetPhysics();
			NxControllerManager * GetControllerManager();
			Physics::PhysScene * CreatePhysScene();
		};
	}
}

#endif